Learning Principles of Neural Networks